﻿using System.Data;
using System.Data.SqlClient;

namespace Universidad.DataAccess.Ado
{
    public class DaoBase
    {
        protected DataTable EjecutarQuery(string sql, DbParameter[] parameters)
        {
            using (SqlConnection conn = ConexionFactory.Crear())
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    foreach (var param in parameters)
                    {
                        cmd.Parameters.Add(param.Nombre, param.Tipo);
                        cmd.Parameters[param.Nombre].Value = param.Valor;
                    }
                    conn.Open();
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        DataTable tabla = new DataTable();
                        tabla.Load(reader);
                        return tabla;
                    }
                }
            }
        }

        protected DataTable EjecutarQuery(string sql)
        {
            return EjecutarQuery(sql, new DbParameter[] { });
        }

    }

    public class DbParameter
    {
        public string Nombre { get; private set; }
        public SqlDbType Tipo { get; private set; }
        public object Valor { get; private set; }
        public DbParameter(string nombreParam, SqlDbType tipoParam, object valorParam)
        {
            this.Nombre = nombreParam;
            this.Tipo = tipoParam;
            this.Valor = valorParam;
        }
    }
}
